#ifndef __SERIAL_JSON_H__
#define __SERIAL_JSON_H__

#include <stdint.h>
#include <stdbool.h>
#include "cJSON.h"

// 串口发送回调函数类型
typedef void (*Serial_SendFunc)(const char *data, uint16_t len);

// 串口接收数据回调类型
typedef void (*Serial_JSONCallback)(cJSON *json_obj);

// 串口 JSON 句柄
typedef struct
{
    Serial_SendFunc send_func;    // 串口发送函数
    Serial_JSONCallback callback; // 解析成功回调
    char rx_buffer[512];          // 接收缓存
    uint16_t rx_index;            // 当前缓存索引
} SerialJSON_HandleTypeDef;

// 初始化
void SerialJSON_Init(SerialJSON_HandleTypeDef *h, Serial_SendFunc send, Serial_JSONCallback cb);

// 发送 cJSON 对象
bool SerialJSON_Send(SerialJSON_HandleTypeDef *h, cJSON *obj);

// 接收串口数据（每个字节调用一次）
void SerialJSON_ReceiveByte(SerialJSON_HandleTypeDef *h, uint8_t byte);

extern SerialJSON_HandleTypeDef serialJSON;
#endif
